/**
 * 
 */
package br.com.sguc.sessionBean;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;

import br.com.sguc.entidade.Localizacao;
import br.com.sguc.interfaces.LocalizacaoRemote;

/**
 * @author Jonas Nadolny - 19/11/2013
 *
 */
public class LocalizacaoSessionBean implements LocalizacaoRemote {

	
	@PersistenceContext
	EntityManager em;
	
	/* (non-Javadoc)
	 * @see br.com.sguc.interfaces.LocalizacaoRemote#pesquisarLocal(br.com.sguc.entidade.Localizacao)
	 */
	@Override
	public Localizacao pesquisarLocal(Localizacao local) {
		Localizacao localizacao = null;
		
		
			try {
			
			String bairro = (local.getBairro() == null ? "'%%'" : "'%" + local.getBairro().toUpperCase() + "%'");
			String cep = (local.getCep() == null ? "'%%'" : "'%" + local.getCep().toUpperCase() + "%'");
			String cidade = (local.getCidade() == null ? "'%%'" : "'%" + local.getCidade().toUpperCase() + "%'");
			String complemento = (local.getComplemento() == null ? "'%%'" : "'%" + local.getComplemento().toUpperCase() + "%'" );
			String nomeLocal = (local.getNomeLocal() == null ? "'%%'" : "'%" + local.getNomeLocal().toUpperCase() + "%'");
			String rua = (local.getRua() == null ? "'%%'" : "'%" + local.getRua().toUpperCase() + "%'");
			String uf = (local.getUf() == null ? "'%%'" : "'%" + local.getUf().toUpperCase() + "%'");
			
			
			TypedQuery<Localizacao> query = em.createQuery("select l1 from Localizacao l1 "
					+ "where bairro like " + bairro + " and cidade like " + cidade + " "
					+ "and complemente like " + complemento + " and nome_local like " + nomeLocal + " "
					+ "and cep like " + cep + " and uf like " + uf + ""
					+ "and rua like " + rua + " ", Localizacao.class);
			
			
			localizacao = query.getSingleResult();
			
		} catch (Exception e) {
			return null;
		}

		return localizacao;

	}

	/* (non-Javadoc)
	 * @see br.com.sguc.interfaces.LocalizacaoRemote#salvar(br.com.sguc.entidade.Localizacao)
	 */
	@Override
	public Localizacao salvar(Localizacao local) {

		Localizacao localizacao;
		
		if(local.getIdLocalizacao() == null){
			
			em.persist(local);
			localizacao = pesquisarLocal(local);
			
		}
		else {
			
			em.merge(local);
			localizacao = local;
			
		}
		
		return localizacao;
	}

}
